/*******************************************************************************
 *	                           bsp.c
 *******************************************************************************/
#include "bsp.h"

/*******************************************************************************
 *	                           function
 *******************************************************************************/
void bsp_gpio_init(void);
void bsp_cpu_option_check(void);
void bsp_pw_delay_for_bug(void);
void bsp_clk_init(void);
void bsp_adc_init(void);
uint32_t bsp_pwm_init(void);
uint32_t bsp_cap_init(void);
void bsp_clk_init(void);
void system_clock_config(void);
void ui_spi_init(void);

/*******************************************************************************
 * @brief  bsp_Init : first line in first task
 * \param[in] none
 * \retval: none
 *******************************************************************************/
void bsp_Init(void)
{
	system_clock_config();

	bsp_pw_delay_for_bug();

	bsp_cpu_option_check();

	bsp_clk_init();
	
	ui_spi_init();
	
	bsp_delay_init();

	bsp_gpio_init();

	app_tick_init(1);

	bsp_uart_init();

	sw_iic_init(sw_iic);
	
	bsp_qpi_init();
}

/*******************************************************************************
 * @brief  bsp_clk_init
 * \param[in] none
 * \retval: none
 *******************************************************************************/
void bsp_clk_init(void)
{
	crm_periph_clock_enable(CRM_DMA1_PERIPH_CLOCK, TRUE);
	crm_periph_clock_enable(CRM_DMA2_PERIPH_CLOCK, TRUE);
	dmamux_enable(DMA1, TRUE);
	dmamux_enable(DMA2, TRUE);
	
	crm_periph_clock_enable(CRM_QSPI1_PERIPH_CLOCK, TRUE);
	
	crm_periph_clock_enable(CRM_TMR1_PERIPH_CLOCK, TRUE);
	crm_periph_clock_enable(CRM_SPI1_PERIPH_CLOCK, TRUE);
	crm_periph_clock_enable(CRM_SPI2_PERIPH_CLOCK, TRUE);
	crm_periph_clock_enable(CRM_SPI3_PERIPH_CLOCK, TRUE);
}

/*******************************************************************************
 * @brief  bsp_pw_delay_for_bug
 * \param[in] none
 * \retval: none
 *******************************************************************************/
void bsp_pw_delay_for_bug(void)
{
	volatile uint32_t dly = 0 * 120 * 1000 * 1000 / 12;
	while (dly--)
	{
	}
}

/*******************************************************************************
 * @brief  bsp_Idle
 * \param[in] none
 * \retval: none
 *******************************************************************************/
void bsp_Idle(void)
{
}
